package com.jieao.template.service;

import com.github.pagehelper.PageInfo;
import com.jieao.template.entity.permissionMgr.PermissionDO;
import com.jieao.template.entity.permissionMgr.PermissionTreeVO;
import com.jieao.template.entity.pub.Pagination;

import java.util.List;

/**
 * 权限表(Permission)表服务接口
 *
 * @author jzw
 * @since 2020-04-30 09:31:06
 */
public interface PermissionService
{
    /**
     * 获取当前登录用户的权限code
     *
     * @param
     * @return java.util.List<java.lang.String>
     * @author Jzw
     * @date 2019/12/27 15:40
     */
    List<String> getAllPermissionByUserId();

    /**
     * 权限树
     *
     * @return java.lang.Object
     * @author Jzw
     * @date 2019/12/17 13:15
     */
    List<PermissionTreeVO> getPermissionTree();

    /**
     * 停启用权限
     *
     * @param id 权限id
     * @return java.lang.Object
     * @author Jzw
     * @date 2019/12/16 15:22
     */
    void delMenuOrPermission(String id);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    PermissionDO queryById(String id);

    /**
     * 查询分页数据
     *
     * @param pagination 分页信息
     * @return PageInfo对象
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    PageInfo<PermissionDO> queryAllByLimit(Pagination pagination);

    /**
     * 查询全部数据
     *
     * @param permission 筛选对象
     * @return 列表数据
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    List<PermissionDO> queryAll(PermissionDO permission);

    /**
     * 新增数据
     *
     * @param permission 实例对象
     * @return 实例对象
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    PermissionDO insert(PermissionDO permission);

    /**
     * 修改数据
     *
     * @param permission 实例对象
     * @return 实例对象
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    int update(PermissionDO permission);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    boolean deleteById(String id);

    /**
     * 通过主键集合批量删除数据
     *
     * @param idList 主键集合
     * @author jzw
     * @since 2020-04-30 09:31:06
     */
    void batchDeletionByIdList(List<String> idList);

}